package cashpointer.mobile.service;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.IBinder;
import cashpointer.mobile.support.Functions;
import cashpointer.mobile.support.NotificationSupportManager;
import cashpointer.mobile.support.PreferencesManager;
import cashpointer.mobile.support.UpdateThread;

/**
 * Service odpowiedzialny na aktualizacje bazy danych.
 * @author wojtek
 *
 */
public class UpdateService extends Service {
	
	private ConnectivityManager connectivityManager = null;
	
	//private static String LOG_TAG = "UpdateService"; 
	
	public UpdateService() {
	}

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	public void  onCreate() {
		// Manadzer informujacy o polaczeniu z internetem
		connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
	}

	public void onDestroy() {
	}
	
	public void onStop() {
	}

	public void onStart(Intent intent, int startId) {
		// Sprawdzam czy nastepuje wymuszenie uploadu
		boolean forceUpload = intent.getBooleanExtra("forceUpload", false);
		
		// Sprawdzam czy opcja automayucznej aktualizacji jest wlaczona
		boolean isAutoUpdateOn = PreferencesManager.getBoolean(getApplicationContext(), PreferencesManager.IS_AUTOUPDATE_ON, false);
		
		// Czy proces automatycznego update'u jest wlaczony i zostal uruchomiony jeden raz
		if ((isAutoUpdateOn || forceUpload) && startId == 1) {
			// Sprawdzam, czy jest polaczenie z internetem
			if (Functions.isConnectionEnabled(connectivityManager)) {				
				// Logi
				//Log.i(LOG_TAG, "Rozpoczeto proces aktualizacji...");
				
				// Komunikat
				NotificationSupportManager.showToastNotification(getApplicationContext(), "Rozpoczeto proces aktualizacji...");
				
				// Rozpoczynam proces aktualizacji w odrebnym watku
				UpdateThread updateThread = new UpdateThread();
				updateThread.setContext(getApplicationContext());
				updateThread.start();
			} else {
				// Logi
				//Log.i(LOG_TAG, "Aktualizacja zakonczona niepowodzeniem! Brak polaczenia z internetem!");
				
				// Komunikat problemu
				Functions.notifyUpdateProcess(getApplicationContext(), "Aktualizacja zakończona niepowodzeniem! Brak połączenia z internetem!");
			}
			
		}
		
		// Konczenie procesu.
		stopSelf();
	}
}
